<?php
class ResultFactory extends AbstractFactory {

    /**
     * Building Result object
     * @return object result
     */
    public static function newResultUsuarioNaoLogado() {
        $result = new GenericResult();
        $result->setSuccess(IResult::USUARIO_NAO_LOGADO);
        $result->setErrorTitle('Usu&aaculte;rio n&atildeo logado.');
        $result->setErrorMsg('Usu&aaculte;rio n&atildeo logado. Efetuar login novamente.');
        //$result->setShowHeaderError(true);
        return $result;
    }
    
    /**
     * Building Result object
     * @return object result
     */
    public static function newResultFalhaPermissao() {
        $result = new GenericResult();
        $result->setSuccess(IResult::FALHA_PERMISSAO);
        $result->setErrorTitle('Usu&aaculte;rio sem permiss&atildeo.');
        $result->setErrorMsg('Usu&aaculte;rio n&atildeo possui permiss&atildeo para executar esta a&ccedil;&atildeo ou acessar este servi&ccedil;o');
        //$result->setShowHeaderError(true);
        return $result;
    }
    
    /**
     * Building Result object
     * @return object result
     */
    public static function newResultFalha($title, $msg) {
        $result = new GenericResult();
        $result->setSuccess(IResult::FALHA);
        $result->setErrorTitle($title);
        $result->setErrorMsg($msg);
        //$result->setShowHeaderError(true);
        return $result;
    }
    
    /**
     * Building Result validation failed
     * @param array
     * @return object result
     */
    public static function newResultFalhaValidacao($arrayResult) {
        $result = new GenericResult();
        $result->setSuccess(IResult::FALHA_VALIDACAO);
        $result->setArrayResult($arrayResult);
        return $result;
    }
    
    /**
     * Building Result success
     * @param int
     * @param array
     * @return object result
     */
    public static function newResultArraySucesso($arrayResult, $numLinhas='') {
        $result = new GenericResult();
        $result->setSuccess(IResult::SUCESSO);
        if(Util::isNotEmpty($numLinhas)) {
            $result->setNumRowsAffected($numLinhas);
        } else {
            $result->setNumRowsAffected(count($arrayResult));
        }
        $result->setArrayResult($arrayResult);
        return $result;
    }
    
    /**
     * Building Result success
     * @param int
     * @param array
     * @return object result
     */
    public static function newResultSingleSucesso($objResult) {
        $result = new GenericResult();
        $result->setSuccess(IResult::SUCESSO);
        $result->setResult($objResult);
        return $result;
    }
    
    /**
     * Building Result failed
     * @return object result
     */
    public static function newResultFalhaOcorreuAtualizacao() {
        $result = new GenericResult();
        $result->setSuccess(IResult::OCORREU_UMA_ATUALIZACAO);
        $result->setErrorTitle('Erro de gravação.');
        $result->setErrorMsg('Registro Desatualizado. Por favor, atualize o registro e tente novamente.');
        return $result;
    }
}

?>
